package cn.buk.tms.eotms.service;


import cn.buk.common.JsonResult;
import cn.buk.tms.common.dto.base.BaseDto;
import cn.buk.tms.eotms.dto.CarOrderDto;
import cn.buk.tms.eotms.sc.SearchCarOrderCriteria;

import java.util.List;

public interface RentalCarService {


    /**
     * 提交订单
     *
     * @param userId          用户id
     * @param orderNo         订单号
     * @param vehicleTypeId   车型组id（供应商的）
     * @param vehicleTypeName 车型组名称（已经是本地的）
     * @param price           价格
     * @param discount        优惠
     * @param linkPhone       联系电话
     * @param linkman         联系人
     * @param email           联系人电子邮件
     * @param payType         付款方式
     * @param remark          备注
     * @param flightOrderId 相关联的机票订单id
     * @return
     */
    BaseDto submitCarOrder(int userId, String orderNo, int vehicleTypeId, String vehicleTypeName,
                           double price, double discount, String linkPhone, String linkman,
                           String email, int payType, String remark, int flightOrderId);

    List<CarOrderDto> searchRentalCarOrders(int userId, SearchCarOrderCriteria sc);

    CarOrderDto searchRentalCarOrder(int userId, int orderId);

    /**
     * 客户自行取消租车订单
     *
     * @param userId
     * @param orderId
     * @return
     */
    JsonResult cancelRentalCarOrder(int userId, int orderId);

    /**
     * 为租车订单付款
     *
     * @param userId
     * @param orderId
     * @return
     */
    JsonResult payRentalCarOrder(int userId, int orderId);

    /**
     * 审批租车订单
     * @param userId
     * @param orderId
     * @param denyCode
     * @param denyReason
     * @return
     */
    JsonResult approveRentalCarOrder(int userId, int orderId, int denyCode, String denyReason);
}
